package com.byedu.util.yunpian.util;

/**
 * Created by bingone on 15/11/18.
 */


    import com.byedu.util.yunpian.common.Config;

    import java.util.Collection;

    /**
     * 字符串连接工具类
     */
    public final class StringUtil {

        private StringUtil() {
        }

        /**
         * @see #join(Object[] array, String sep, String prefix)
         */
        public static String join(Object[] array, String sep) {
            return join(array, sep, null);
        }

        /**
         * @see #join(Object[] array, String sep, String prefix)
         */
        public static String join(Collection list, String sep) {
            return join(list, sep, null);
        }

        /**
         * @see #join(Object[] array, String sep, String prefix)
         */
        public static String join(Collection list, String sep, String prefix) {
            Object[] array = list == null ? null : list.toArray();
            return join(array, sep, prefix);
        }

        /**
         * 以指定的分隔符来进行字符串元素连接
         * <p>
         * 例如有字符串数组array和连接符为逗号(,)
         * <code>
         * String[] array = new String[] { "hello", "world", "qiniu", "cloud","storage" };
         * </code>
         * 那么得到的结果是:
         * <code>
         * hello,world,qiniu,cloud,storage
         * </code>
         * </p>
         *
         * @param array  需要连接的对象数组
         * @param sep    元素连接之间的分隔符
         * @param prefix 前缀字符串
         * @return 连接好的新字符串
         */
        public static String join(Object[] array, String sep, String prefix) {
            if (array == null) {
                return "";
            }

            int arraySize = array.length;

            if (arraySize == 0) {
                return "";
            }

            if (sep == null) {
                sep = "";
            }

            if (prefix == null) {
                prefix = "";
            }

            StringBuilder buf = new StringBuilder(prefix);
            for (int i = 0; i < arraySize; i++) {
                if (i > 0) {
                    buf.append(sep);
                }
                buf.append(array[i] == null ? "" : array[i]);
            }
            return buf.toString();
        }

        /**
         * 以json元素的方式连接字符串中元素
         * <p>
         * 例如有字符串数组array
         * <code>
         * String[] array = new String[] { "hello", "world", "qiniu", "cloud","storage" };
         * </code>
         * 那么得到的结果是:
         * <code>
         * "hello","world","qiniu","cloud","storage"
         * </code>
         * </p>
         *
         * @param array 需要连接的字符串数组
         * @return 以json元素方式连接好的新字符串
         */
        public static String jsonJoin(String[] array) {
            int arraySize = array.length;
            int bufSize = arraySize * (array[0].length() + 3);
            StringBuilder buf = new StringBuilder(bufSize);
            for (int i = 0; i < arraySize; i++) {
                if (i > 0) {
                    buf.append(',');
                }

                buf.append('"');
                buf.append(array[i]);
                buf.append('"');
            }
            return buf.toString();
        }

        public static boolean isNullOrEmpty(String s) {
            return (s == null || "".equals(s)|| "0".equals(s)|| "全部".equals(s)|| "undefined".equals(s));
        }

        public static String getNullOrEmpty(String s) {
            if (s == null || "".equals(s)|| "0".equals(s)|| "全部".equals(s)|| "undefined".equals(s)){
                return null;
            }else{
                return s;
            }
        }

        public static boolean inStringArray(String s, String[] array) {
            for (String x : array) {
                if (x.equals(s)) {
                    return true;
                }
            }
            return false;
        }

        public static byte[] utf8Bytes(String data) {
            return data.getBytes(Config.CHARSET);
        }

        public static String utf8String(byte[] data) {
            return new String(data, Config.CHARSET);
        }
    }

